package com.gitee.qdbp.base.controlling;

import java.lang.reflect.Field;
import com.gitee.qdbp.able.beans.AcceptAttrs;
import com.gitee.qdbp.able.exception.ServiceException;
import com.gitee.qdbp.base.enums.OperateType;

/**
 * 数据隔离的数据权限属性处理
 *
 * @author zhaohuihua
 * @version 180612
 */
public interface IAcceptAttrsHandler {

    /**
     * 获取数据隔离的权限属性
     * 
     * @param object 数据对象
     * @param field 字段(tenantCode/deptCode之类)
     * @param dataType 数据类型(表名)
     * @param operateType 操作类型, 查询/新增/修改/删除
     * @return 权限属性, return null将不会执行任何后续处理
     * @throws ServiceException
     */
    AcceptAttrs<?> getAcceptAttrs(Object o, Field field, String dataType, OperateType operateType)
            throws ServiceException;
}
